/*
 * 问题：水晶灯控制与查询
 * 描述：有N盏灯（编号1~N），初始状态均为熄灭。
 *       接收T条指令，指令分为两种：
 *       1. CHANGE m：切换第m盏灯的状态（亮→灭 或 灭→亮）
 *       2. QUERY：查询当前亮着的灯的数量并输出
 * 要求：高效处理指令，尤其是查询操作需快速响应
 */

#include <stdio.h>
#include <stdbool.h>  // 提供bool类型（true/false）

// 定义最大灯数量为100001（满足题目中N可能的最大值）
#define MAX_N 100001

int main() {
    int N, T;
    // 读取灯的总数量N和指令数量T
    scanf("%d %d", &N, &T);

    // 布尔数组记录每盏灯的状态：
    // lights[m] = true 表示第m盏灯亮着
    // lights[m] = false 表示第m盏灯熄灭
    // 初始值全部为false（所有灯默认熄灭）
    bool lights[MAX_N] = {false};
    
    // 计数器：实时记录当前亮着的灯的数量
    // 避免每次查询时遍历数组，提高效率
    int count = 0;

    char cmd[10];  // 存储指令字符串（如"CHANGE"或"QUERY"）
    int m;         // 存储CHANGE指令后的灯编号

    // 循环处理T条指令
    for (int i = 0; i < T; ++i) {
        // 读取指令（如"CHANGE"或"QUERY"）
        scanf("%s", cmd);

        // 判断指令类型（通过首字母快速区分）
        if (cmd[0] == 'C') {  // 处理CHANGE指令
            scanf("%d", &m);  // 读取要操作的灯编号m

            // 切换第m盏灯的状态，并更新计数器
            if (lights[m]) {
                // 原状态为亮：切换为灭，计数器减1
                count--;
            } else {
                // 原状态为灭：切换为亮，计数器加1
                count++;
            }

            // 切换灯的状态（true→false 或 false→true）
            lights[m] = !lights[m];

        } else if (cmd[0] == 'Q') {  // 处理QUERY指令
            // 直接输出当前亮灯数量（计数器的值）
            printf("%d\n", count);
        }
    }

    return 0;
}
    